package com.cqw.commontest.lambda;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @Author: caoqingwen
 * @CreateTime: 2021-06-02 10:52
 * @Description: 归集（toList/toSet/toMap）
 * 因为流不存储数据，那么在流中的数据完成处理后，需要将流中的数据重新归集到新的集合中，
 * toList/toSet/toMap比较常用
 * 还有toCollection、toConcurrentMap等复杂的一些用法
 */
public class StreamTest5 {


    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1, 3, 5, 6, 7, 6);
        //找出里面的偶数，形成新的集合
        List<Integer> collect = list.stream().filter(t -> t % 2 == 0).collect(Collectors.toList());

        Set<Integer> collect1 = list.stream().filter(t -> t % 2 == 0).collect(Collectors.toSet());


        List<Person> personList = new ArrayList<>();
        personList.add(new Person("张三", 1000, 21, "男", "上海"));
        personList.add(new Person("李四", 2000, 25, "女", "安徽"));
        personList.add(new Person("王五", 2200, 36, "男", "杭州"));
        personList.add(new Person("赵六", 1400, 25, "女", "南京"));
        personList.add(new Person("曹七", 3000, 12, "男", "北京"));
        personList.add(new Person("Lily", 5000, 42, "女", "上海"));

        //找出所有人名
        List<String> collect2 = personList.stream().map(Person::getName).collect(Collectors.toList());
        //转map  名字做key
        Map<String, Person> collect3 = personList.stream().collect(Collectors.toMap(Person::getName, p -> p));
        System.out.println(collect3);

    }
}
